# -*- coding: utf-8 -*-
"""
基础布局组件类 - TgBaseLayout
所有TG布局组件的基类
"""
from ...style_manager import StyleManager


class TgLayoutMixin:
    """TG布局组件的通用逻辑混入类"""
    
    def __init__(self, margins='medium', spacing='medium'):
        # super().__init__() 的调用将由具体的布局类处理
        
        # 初始化TG组件属性
        self._component_name = self.__class__.__name__
        self._is_initialized = False
        self._style_applied = False
        self._margins = margins
        self._spacing = spacing
        
        # 手动调用初始化
        self.initialize()
    
    @property
    def component_name(self):
        """获取组件名称"""
        return self._component_name
    
    @property
    def is_initialized(self):
        """检查组件是否已初始化"""
        return self._is_initialized
    
    @property
    def style_applied(self):
        """检查样式是否已应用"""
        return self._style_applied
    
    def setup_ui(self):
        """设置用户界面"""
        pass
    
    def apply_style(self):
        """应用样式"""
        StyleManager.setup_layout(self, self._margins, self._spacing)
        self._style_applied = True
    
    def initialize(self):
        """初始化组件"""
        if not self._is_initialized:
            self.setup_ui()
            self.apply_style()
            self._is_initialized = True
            self._style_applied = True